package com.bzm.common.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

/**
 * @Description:序列号工具类
 * @author hm
 * @time:2018年11月27日 上午10:04:10
 */
public class SerialNumberUtils {
	
	/**
	 * bzm_code
	 */
	public static final String BZM_CODE = "bzm"; 
	
	/**
	 * pet_code
	 */
	public static final String PET_CODE = "pet"; 
	/**
	 * pet_code
	 */
	public static final String UNION_CODE = "union";

	public static final String TRADE_CODE = "trade";


	/**
	 * number_format
	 */
	public static final SimpleDateFormat number_format = new SimpleDateFormat("yyMMddHHss"); 
	
	/**
	 * @Description:生成规则     年月日时分 + 业务类型 + 主账号用户id + 随机数 5 位
	 * @param type		序列号类型
	 * @param userId	用户id
	 * @return
	 * String
	 * @exception:
	 * @author: hemiao
	 * @time:2018年11月27日 上午10:21:39
	 */
	public static String createNumber(String type,String userId) {
		StringBuilder number = new StringBuilder();
		if(StringUtils.isBlank(type)) {
			// 业务code
			number.append(BZM_CODE);
		}else {
			number.append(type);
		}
		// 年月日时分		
		String dateFormat = number_format.format(new Date());
		number.append(dateFormat);
		String userIdStr = "";
		if(StringUtils.isNotBlank(userId)) {
			userIdStr = userId;
		}
		if(StringUtils.isNotBlank(userIdStr)) {
			// 主账号用户id   唯一
			number.append(userIdStr.substring(userIdStr.length()-4));	
		}else {
			number.append((int)((Math.random()*9+1)*1000));	
		}
		
		/*
		 * // 获得6位随机数 int abs = (int)((Math.random()*9+1)*2); System.out.println(abs);
		 * if(String.valueOf(abs).length()==1) { if(StringUtils.isNotBlank(userIdStr)) {
		 * number.append(userIdStr.substring(userIdStr.length()-1)); }else {
		 * number.append(8); } }
		 */
		number.append((int)((Math.random()*9+1)*1000));
		return number.toString();
	}
	
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			System.out.println(createNumber(TRADE_CODE,null));
		}
	}
	

}
